/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.sistemasInf.controller;

import java.util.ArrayList;
import java.util.Date;
import pe.edu.pucp.sistemasInf.bean.Cliente;
import pe.edu.pucp.sistemasInf.bean.Factura;

/**
 *
 * @author jbaldeon
 */
public class Service {
 
    DAOFactory daoFactory = DAOFactory.getDAOFactory(DBConfig.dbType);
    DAOFactura daoFactura = daoFactory.getDAOFactura();
    DAOUsuario daoUsuario = daoFactory.getDAOUsuario();    
    DAOPerfil daoPerfil = daoFactory.getDAOPerfil();    
    DAOCliente daoCliente = daoFactory.getDAOCliente();
    
    
    public void addCliente(Cliente c,String codUsuario,int codClientePadre)
    {
        daoCliente.add(c, codUsuario,codClientePadre);
    }
    
    public void addFactura (Factura fact, int clPadre, int clHijo){
            daoFactura.add(fact,clPadre,clHijo);
    }
    
        public void updateFactura (Factura fact){
            daoFactura.update(fact);
    }
    
    public int validateUser (String usr, String pass){
            
            return daoUsuario.validateUser(usr, pass);
    }
    
    public static void updateCliente (Cliente c){
            DAOFactory daoFactory = DAOFactory.getDAOFactory(DBConfig.dbType);
            DAOCliente daoCliente = daoFactory.getDAOCliente();
            daoCliente.update(c);
    }
    
    public String getNamePerfil (int idPerfil){
            return daoPerfil.getNamePerfil(idPerfil);
    }

    public Cliente queryClienteByRUC (String ruc){            
            return daoCliente.queryClienteByRUC(ruc);
    }
    
        public Cliente queryClienteByCod (int cod){            
            return daoCliente.queryClienteByCod(cod);
    }
    
    public ArrayList<Cliente> queryAllClientes()
    {
        return daoCliente.queryAllCliente();
    }
    
    public ArrayList<Cliente> queryClientesHijos(int codClientePadre)
    {
        return daoCliente.queryClienteHijos(codClientePadre);
    }
    
     public ArrayList<Cliente> queryClientesUsuario(String nameUser)
    {
        return daoCliente.queryClienteUser(nameUser);
    }
     
    public ArrayList<Factura> SearchAllFacturas(){
        ArrayList<Factura> listFacturas = new ArrayList<>();
        daoFactura.queryAll();
        return listFacturas;
    }
    
    public Factura searchFacturabyNo(String number){
        Factura nuevoFact = new Factura();
        daoFactura.queryByid(number);
        return nuevoFact;
    }
    
    public void deleteFactura(String number){        
        daoFactura.delete(number);        
    }
    
    public ArrayList<Factura> queryFacturaByParameters(String numfactura, int codcliente, java.util.Date fechaemision1, java.util.Date fechaemision2, java.util.Date fechavencimiento1, java.util.Date fechavencimiento2, float monto1, float monto2){
        return daoFactura.queryFacturaByParameters(numfactura, codcliente, fechaemision1, fechaemision2, fechavencimiento1, fechavencimiento2, monto1, monto2);
    }
       
}
